package com.senthink.gl.business.domain.repository;

import com.senthink.gl.business.domain.entity.Area;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.List;
import java.util.Optional;

/**
 * 区域持久化Repository
 *
 * @author zooqi@senthink.com
 * @date 2017/11/22
 */
public interface AreaRepository extends JpaRepository<Area, Long>, JpaSpecificationExecutor<Area> {

    /**
     * 通过aid获取区域详情
     *
     * @param aid
     * @return
     */
    Optional<Area> findTopByAid(String aid);

    /**
     * 通过name获取区域详情
     *
     * @param name
     * @return
     */
    Optional<Area> findTopByName(String name);

    /**
     * 获取所有区域列表(按区域名称排序)
     *
     * @return
     */
    List<Area> findAllByOrderByName();

    /**
     * 获取一组区域详情
     *
     * @param aids
     * @return
     */
    List<Area> findAllByAidIn(Iterable<String> aids);

    /**
     * 删除记录
     *
     * @param aid
     * @return
     */
    @Transactional
    long deleteByAid(String aid);

    /**
     * 计数
     *
     * @param name
     * @return
     */
    long countByName(String name);

}
